package day0401;

import java.util.Scanner;


public class LISP22 {
    /**
     * 21.LISP语言唯一的语法就是括号要配对。
     * 形如 (OP P1 P2 …)，括号内元素由单个空格分割。
     * 其中第一个元素OP为操作符，后续元素均为其参数，参数个数取决于操作符类型
     * 注意：参数 P1, P2 也有可能是另外一个嵌套的 (OP P1 P2 …)
     * 当前OP类型为add/sub/mul/div(全小写)，分别代表整数的加减乘除法。简单起见，所以OP参数个数为2
     * 举例
     * 输入：(mul 3 -7)输出：-21
     * 输入：(add 1 2) 输出：3
     * 输入：(sub (mul 2 4) (div 9 3)) 输出 ：5
     * 输入：(div 1 0) 输出：error
     * 输入描述：
     * 合法C字符串，字符串长度不超过512，用例保证了无语法错误
     * 输出描述：
     * 合法C字符串，字符包括’0’-‘9’及负号’-‘或者’error’
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String s = sc.nextLine();
            int result = 0;
            for (int i = 0; i < s.length(); i++) {
                if (s.charAt(i) == ')') {
                    for (int j = i; j >= 0; j--) {
                        if (s.charAt(j) == '(') {
                            String[] strings = s.substring(j + 1, i).split(" ");
                            String cal = cal(strings[0], Integer.parseInt(strings[1]), Integer.parseInt(strings[2]));

                            if ("error".equals(cal)) {
                                System.out.println("error");
                                return;
                            }
                            result = Integer.parseInt(cal);
                            s = s.replace(s.substring(j, i + 1), cal);
                            i = 0;
                            break;
                        }
                    }
                }
            }
            System.out.println(result);
        }
    }

    private static String cal(String op, int num1, int num2) {
        int res = 0;
        switch (op) {
            case "add":
                res = num1 + num2;
                break;
            case "sub":
                res = num1 - num2;
                break;
            case "mul":
                res = num1 * num2;
                break;
            case "div":
                if (num2 == 0) {
                    return "error";
                } else {
                    res = num1 / num2;
                }
                break;
        }
        return res + "";

    }
}
